#include <iostream>

void Swap(int& a,int& b)
{
    int temp = a;
    a = b;
    b = temp;
}

void printInt(int &a)
{
    a++; //常引用不允许修改
    std::cout<<a<<std::endl;
}

int main()
{
    // 引用：替代指针
    // 引用是变量的别名
    // 引用符号：
    // 1、引用定义必须要初始化 
    // 2、引用一经确定，不可再修改朝向 int * const p
    // int a = 10;
    // int& b = a; //b作为a的引用  （定义一个引用 名字叫b）
    // // b = c; // 不对的
    // b=20;
    // std::cout<<a<<std::endl;

    // int a = 10;
    // int b = 20;
    // Swap(a,b);  
    // std::cout<<"a="<<a<<" b="<<b<<std::endl;

    //引用的本质：指针常量
    int a  = 10;
    // int &b = a;    // int *const b = &a;

    //左值引用：只能取左值
    // int &c = 10;
    // const int &c = 10; //常量引用 ：const& ：可以取右值 
    // printInt(10);

    // printInt(8); //形参 加const& 左右值都可以
    return 0;
}
